#include<iostream>
#include<stack>
#include<cstring>
using namespace std;
typedef long long ll;
const int N=1e5+10;
int numset[N];
int dist[N][3];

int main()
{
	int n;
	while(cin>>n,n)
	{
		for(int i=1;i<=n;i++)
		{
			cin>>numset[i];
		}

		stack<int> st;

		for(int i=1;i<=n;i++)
		{
			while(!st.empty()
				&&numset[st.top()]>=numset[i])
			{
				st.pop();
			}
			if(!st.empty())
			{
				dist[i][1]=st.top();
			}
			else
				dist[i][1]=0;
			st.push(i);
		}

		while(st.size()) st.pop();

		for(int i=n;i>=1;i--)
		{
			while(!st.empty()
				&&numset[st.top()]>=numset[i])
			{
				st.pop();
			}
			if(!st.empty())
			{
				dist[i][2]=st.top();
			}
			else
				dist[i][2]=n+1;
			st.push(i);
		}

		ll ret=0;

		for(int i=1;i<=n;i++)
		{
			int left=i-dist[i][1];
			int right=dist[i][2]-i;
			ret=max(ret,1ll*(left+right-1)*numset[i]);
		}

		cout<<ret<<endl;
	}
}